home *** CD-ROM | disk | FTP | other *** search
/ Linux Cubed Series 7: Sunsite / Linux Cubed Series 7 - Sunsite Vol 1.iso / system / news / inn1.000 / inn1.4sec-linux-src.tar / inn / samples / rmgroup < prev    next >
Text File  |  1993-12-22  |  2KB  |  76 lines

  1. #! /bin/sh
  2. ##  $Revision: 1.16 $
  3. ##  Rmgroup control-message handler
  4.  
  5. PROG=rmgroup
  6. ##  Some shells don't pass in $* unless we explicitly pass it in here.
  7. ##  =()<. @<_PATH_PARSECTL>@ "$@">()=
  8. . /news/bin/control/parsecontrol "$@"
  9.  
  10. case ${ACTION} in
  11. mail)
  12.     grep "^$1 " ${ACTIVE} >/dev/null 2>&1 || {
  13.     # Group doesn't exist
  14.     exit
  15.     }
  16.     P1=$1
  17.     export FROM P1 NEWSBIN ARTICLE
  18.     (
  19.     echo "${FROM} requested that ${P1} be removed."
  20.     echo 'To do this, type the following:'
  21.     echo "    ${NEWSBIN}/ctlinnd rmgroup ${P1}"
  22.     echo ''
  23.     echo 'The full article was:'
  24.     sed -e 's/^~/~~/' ${ARTICLE}
  25.     ) | ${MAILCMD} -s "rmgroup $1 by ${FROM}" ${NEWSMASTER}
  26.     exit
  27.     ;;
  28. esac
  29.  
  30. ##  Make sure the article is approved and that the group exists.
  31. ${SED} -e '/^$/q' <$ARTICLE >${TEMP}
  32. grep '^Approved:' <${TEMP} >/dev/null 2>&1 || {
  33.     ${WRITELOG} ${LOGFILE} "Unapproved rmgroup by ${FROM}" <${ARTICLE}
  34.     rm -f ${TEMP}
  35.     exit
  36. }
  37. rm -f ${TEMP}
  38. grep "^$1 " ${ACTIVE} >/dev/null 2>&1 || {
  39.     # Group doesn't exist
  40.     exit
  41. }
  42.  
  43. case ${ACTION} in
  44. logit)
  45.     ${WRITELOG} ${LOGFILE} "rmgroup $1 by ${FROM} skipped" <${ARTICLE}
  46.     exit
  47.     ;;
  48. esac
  49.  
  50. ##  Do the work.
  51. ctlinnd -s rmgroup "$1"
  52. ${WRITELOG} ${LOGFILE} "rmgroup $1 by ${FROM}" <${ARTICLE}
  53.  
  54. ##  We're sending to a file.
  55. LOCK=${LOCKS}/LOCK.newsgroups
  56. PID=$$
  57. TRY=0
  58. MAXTRY=60
  59. export LOCK MAXTRY PID LOGFILE TRY
  60. while [ ${TRY} -lt ${MAXTRY} ]; do
  61.     shlock -p ${PID} -f ${LOCK} && break
  62.     sleep 2
  63.     TRY=`expr ${TRY} + 1`
  64. done
  65.  
  66. ##  If we got the lock, update the file; otherwise, give up.
  67. test ${TRY} -lt ${MAXTRY} || {
  68.     echo "Newgroup cannot update newsgroups.  Locked by" `cat ${LOCK}` 1>&2
  69.     exit
  70. }
  71.  
  72. ${EGREP} -v "^$1[    ]" <${NEWSGROUPS} >${TEMP}
  73. cat ${TEMP} >${NEWSGROUPS}
  74. rm ${TEMP} ${LOCK}
  75. exit
  76.